package dataspace

// Сериализация байта.
func writeByte(b []byte, n byte) []byte {
	b = append(b, byte(n))
	return b
}

// Сериализация значения true-false.
func writeBool(b []byte, boolean bool) []byte {
	if boolean {
		b = append(b, 1)
	} else {
		b = append(b, 0)
	}
	return b
}

// Сериализация uint16.
func writeUint16(b []byte, n uint16) []byte {
	b = append(
		b,
		byte(n),
		byte(n>>8),
	)
	return b
}

// Сериализация uint32.
func writeUint32(b []byte, n uint32) []byte {
	b = append(
		b,
		byte(n),
		byte(n>>8),
		byte(n>>16),
		byte(n>>24),
	)
	return b
}

// Десериализация булева значения.
func getBool(b byte) bool {
	return b == 1
}

// Десериализация uint16.
func getUint16(b []byte) (n uint16) {
	n |= uint16(b[0])
	n |= uint16(b[1]) << 8
	return
}

// Десериализация uint32.
func getUint32(b []byte) (n uint32) {
	n |= uint32(b[0])
	n |= uint32(b[1]) << 8
	n |= uint32(b[2]) << 16
	n |= uint32(b[3]) << 24
	return
}
